package com.xjscrm.console.service.customer.wwDevice;

import com.xjscrm.common.annotation.MerId;
import com.xjscrm.common.entity.WwDevice;
import com.xjscrm.console.dto.ChatWwDeviceQueryDTO;
import com.xjscrm.console.param.BaseDto;
import com.xjscrm.console.param.user.ExternalUserIdRateSetDto;
import com.xjscrm.console.param.wwDevice.DeviceGroupDto;
import com.xjscrm.console.param.wwDevice.WwDeviceDto;
import com.xjscrm.console.param.wwDevice.WwDeviceQuery;
import com.xjscrm.console.vo.LoginVO;
import com.xjscrm.console.vo.MyPageInfo;
import com.xjscrm.console.vo.WwDeviceVo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface WwDeviceService {
    MyPageInfo<WwDeviceVo> getWwDevice(WwDeviceQuery wwDeviceQuery);

    Object onlineWwDeviceNum(BaseDto baseDto);

    Object getDeviceGroupDropdwon(BaseDto baseDto);

    Object getWwDevicedetail(WwDeviceDto wwDeviceDto);

    Object getOperatePlan(WwDeviceDto wwDeviceDto);

    Object getDeviceGroup(DeviceGroupDto deviceGroupDto);


    Object getDeviceDropDwon(BaseDto baseDto);

    void addDeviceGroup(DeviceGroupDto deviceGroupDto);

    void deleDeviceGroup(DeviceGroupDto deviceGroupDto);

    void moveDeviceGroup(DeviceGroupDto deviceGroupDto);


    void deleDeviceGroupRelation(DeviceGroupDto deviceGroupDto);


    void updateDeviceGroup(DeviceGroupDto deviceGroupDto);

    List<WwDevice> listByCondition(WwDeviceQuery wwDeviceQuery);

    void batchDeleDeviceGroupAll(DeviceGroupDto deviceGroupDto);

    void batchMoveDeviceGroupAll(DeviceGroupDto deviceGroupDto);

    WwDevice getByDeviceId(WwDeviceQuery wwDeviceQuery);

    WwDevice getByDeviceId(@MerId Long merId, String deviceId);

    WwDevice getById(@MerId Long merId, Long id);

    List<WwDevice> getByIds(Long merId, List<Long> deviceUniqueIds);

    List<WwDevice> listByMerId(Long merId);

    boolean update(WwDevice wwDevice);

    Object pageWithChat(LoginVO login, ChatWwDeviceQueryDTO query);

    void exportDevice(WwDeviceQuery wwDeviceQuery, HttpServletResponse response);

    Object getTaskTagAuto(WwDeviceDto wwDeviceDto);

    Object getFaqReply(WwDeviceDto wwDeviceDto);

    Object getGroupPull(WwDeviceDto wwDeviceDto);

    Object getGroupWelcome(WwDeviceDto wwDeviceDto);


    void setExternalUseridRate(ExternalUserIdRateSetDto externalUserIdRateSetDto);
}
